package com.yqw.onlineDocs.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yqw.onlineDocs.model.dto.documentUser.DocumentUserAddRequest;
import com.yqw.onlineDocs.model.dto.documentUser.DocumentUserQueryRequest;
import com.yqw.onlineDocs.model.entity.DocumentUser;
import com.yqw.onlineDocs.model.vo.DocumentUserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author gemdzq
 * @description 针对表【document_user(文档用户关联)】的数据库操作Service
 * @createDate 2025-06-19 14:13:34
 */
public interface DocumentUserService extends IService<DocumentUser> {

    /**
     * 新增文档用户关联
     *
     * @param documentUserAddRequest
     * @return
     */
    long addDocumentUser(DocumentUserAddRequest documentUserAddRequest);

    /**
     * 校验文档用户关联
     *
     * @param documentUser
     * @param add
     */
    void validateDocumentUser(DocumentUser documentUser, boolean add);

    /**
     * 获取查询条件的QueryWrapper
     *
     * @param documentUserQueryRequest
     * @return
     */
    QueryWrapper<DocumentUser> getQueryWrapper(DocumentUserQueryRequest documentUserQueryRequest);

    /**
     * 获取文档VO
     * @param documentUser
     * @param request
     * @return
     */
    DocumentUserVO getDocumentUserVO(DocumentUser documentUser, HttpServletRequest request);

    /**
     * 获取文档用户VO列表
     * @param documentUserList
     * @return
     */
    List<DocumentUserVO> getDocumentUserVOList(List<DocumentUser> documentUserList);

    /**
     * 根据文档ID和用户ID获取文档用户关联
     *
     * @param documentId
     * @param userId
     * @return
     */
    DocumentUser getDocumentUserByDocumentIdAndUserId(Long documentId, Long userId);
}
